package com.ny.zmb.openapi.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ny.zmb.openapi.controller.entity.Result;
import com.ny.zmb.openapi.entity.PmCloudstore;
import com.ny.zmb.openapi.mapper.PmCloudStoreMapper;
import com.ny.zmb.openapi.ysutil.base.EYinShengBase;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@RestController
@RequestMapping("cate")
@CrossOrigin
public class CateController extends EYinShengBase {
    @Resource
    private PmCloudStoreMapper pmCloudStoreMapper;

    /**
     * 查询分类
     * @return
     */
    @GetMapping("home")
    public Result home(){
        LambdaQueryWrapper<PmCloudstore> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(PmCloudstore::getPid,0);
        wrapper.select(PmCloudstore::getId,PmCloudstore::getName,PmCloudstore::getPid);
        return Result.ok(this.pmCloudStoreMapper.selectList(wrapper));
    }

    /**
     * 二级分类
     * @param id
     * @return
     */
    @GetMapping("homeTwo")
    public Result homeTwo(Integer id){
        LambdaQueryWrapper<PmCloudstore> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(PmCloudstore::getPid,id);
        wrapper.select(PmCloudstore::getId,PmCloudstore::getName,PmCloudstore::getPid);
        List<PmCloudstore> pmCloudstores = this.pmCloudStoreMapper.selectList(wrapper);
        if (null != pmCloudstores && pmCloudstores.size() > 0){
            List<Integer> collect = pmCloudstores.stream().map(PmCloudstore::getId).collect(Collectors.toList());
            LambdaQueryWrapper<PmCloudstore> queryWrapper = Wrappers.lambdaQuery();
            queryWrapper.in(PmCloudstore::getPid,collect);
            List<PmCloudstore> list = this.pmCloudStoreMapper.selectList(queryWrapper);
            Map<Integer, List<PmCloudstore>> dataMap = list.stream().collect(Collectors.groupingBy(PmCloudstore::getPid));
            pmCloudstores.forEach(e->{
                e.setChildren(dataMap.get(e.getId()));
            });
        }
        return Result.ok(pmCloudstores);
    }
}
